/*
 * Map对象，实现Map功能
 *
 *
 * size()      获取Map元素个数
 * isEmpty()   判断Map是否为空
 * clear()     删除Map所有元素
 * put(key, value)   向Map中增加元素（key, value) 
 * remove(key)       删除指定key的元素，成功返回true，失败返回false
 * get(key)          获取指定key的元素值value，失败返回null
 * element(index)    获取指定索引的元素（使用element.key，element.value获取key和value），失败返回null
 * containsKey(key)  判断Map中是否含有指定key的元素
 * containsValue(value)  判断Map中是否含有指定value的元素
 * keys()      获取Map中所有key的数组（array）
 * values()    获取Map中所有value的数组（array）
 *
 */
function Map(){
	this.elements = new Array();
 
 	//获取Map元素个数
	this.size = function() {
  		return this.elements.length;
 	},
 
	 //判断Map是否为空
	this.isEmpty = function() {
		return (this.elements.length < 1);
	},
 
	 //删除Map所有元素
	this.clear = function() {
	this.elements = new Array();
	},
 
 	//向Map中增加元素（key, value) 
	this.put = function(_key, _value) {
	if (this.containsKey(_key) == true) {
	
	if(this.remove(_key) == true){
	this.elements.push( {
	key : _key,
	value : _value
	});	
	}else{
	this.elements.push( {
	key : _key,
	value : _value
	});
	}
	} else {
	this.elements.push( {
	key : _key,
	value : _value
	});
	}
},
 
//删除指定key的元素，成功返回true，失败返回false
this.remove = function(_key) {
	var bln = false;
	try  {   
	for (i = 0; i < this.elements.length; i++) {  
	if (this.elements[i].key == _key){
	this.elements.splice(i, 1);
	return true;
	}
	}
	}catch(e){
	bln = false;    
	}
	return bln;
},
 
//获取指定key的元素值value，失败返回null
this.get = function(_key) {
try{   
for (i = 0; i < this.elements.length; i++) {
if (this.elements[i].key == _key) {
return this.elements[i].value;
}
}
}catch(e) {
return null;   
}
},
 
//获取指定索引的元素（使用element.key，element.value获取key和value），失败返回null
this.element = function(_index) {
if (_index < 0 || _index >= this.elements.length){
return null;
}
return this.elements[_index];
},
 
//判断Map中是否含有指定key的元素
this.containsKey = function(_key) {
var bln = false;
try {
for (i = 0; i < this.elements.length; i++) {  
if (this.elements[i].key == _key){
bln = true;
}
}
}catch(e) {
bln = false;    
}
return bln;
},
    
//判断Map中是否含有指定value的元素
this.containsValue = function(_value) {
var bln = false;
 	try {
  	for (i = 0; i < this.elements.length; i++) {  
   	if (this.elements[i].value == _value){
    	bln = true;
  	}
  	}
  	}catch(e) {
   	bln = false;    
  	}
  	return bln;
},
 
 	//获取Map中所有key的数组（array）
this.keys = function() {
var arr = new Array();
 	for (i = 0; i < this.elements.length; i++) {  
 	arr.push(this.elements[i].key);
 	}
return arr;
},

//获取Map中所有value的数组（array）
this.values = function() {
 	var arr = new Array();
 	for (i = 0; i < this.elements.length; i++) {  
 	arr.push(this.elements[i].value);
 	}
 	return arr;
}
}